<h2>Why is this an issue?</h2>
<p>There’s no reason to repeat a default type unless it is early in a list and other, non-default types come after it. Instead, leave it out and only
supply type when it is something other than the default.</p>
<h3>Noncompliant code example</h3>
<pre>
function foo&lt;N = number, S = string&gt;() {}
foo&lt;number, string&gt;();  // Noncompliant; both types redundant
foo&lt;string, string&gt;();  // Noncompliant; 2nd string is redundant
foo&lt;number, number&gt;();  // Ignored; number is redundant but required
</pre>
<h3>Compliant solution</h3>
<pre>
function foo&lt;N = number, S = string&gt;() {}
foo();
foo&lt;string&gt;();
foo&lt;number, number&gt;();
</pre>
<h2>Resources</h2>
<h3>Documentation</h3>
<ul>
  <li> <a href="https://typescript-eslint.io/">typescript-eslint</a> - Rule <a
  href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-unnecessary-type-arguments.mdx">no-unnecessary-type-arguments</a> </li>
</ul>
